hive函数 | 您所在的位置:网站首页 › oracle 两个字段取较大值 › hive函数 |
前言
用多了 max() min() 今天刚好遇到了需要取连续6年中营收最大的逻辑(6列) 一、greatest函数1.1 取多列最大值 select greatest(-99, 0, 73) --73 1.2 存在 null 或者字符串 select greatest(-99, 0, 73, null) --null select greatest(-99, 0, 73, 'string') --null 1.3 存在日期 select greatest('2022-01-01','2022-06-01','2022-06-09') --2022-06-09 1.4 但实际问题中很可能存在null 想了下 先把null做替换 然后再取多列最大 select customer_id, greatest(income_2016,income_2017,income_2018,income_2019,income_2020,income_2021) income from ( select customer_id, if(income_2016 is null,-9999999,income_2016) income_2016, if(income_2017 is null,-9999999,income_2017) income_2017, if(income_2018 is null,-9999999,income_2018) income_2018, if(income_2019 is null,-9999999,income_2019) income_2019, if(income_2020 is null,-9999999,income_2020) income_2020, if(income_2021 is null,-9999999,income_2021) income_2021 from table ) a; 二、least函数 2.1 取多列最小值 select least(-99, 0, 73) -- -99 2.2 存在 null 或者字符串 select least(-99, 0, 73, null) --null select least(-99, 0, 73, 'string') --null 2.3 存在日期 select least('2022-01-01','2022-06-01','2022-06-09') -- 2022-01-01 |
CopyRight 2018-2019 实验室设备网 版权所有 |